

class Person {
//        类的属性,字段
    int age;       // 年龄
    String name;   // 姓名
    String sex;
    public static int count; // 类变量也叫静态变量，编译时已经产生了，属于类本身，且只有一份，存放在方法区中
    public final int SIZE = 10; // 被final 修饰的叫常变量，不是静态的，也属于对象，后续不可以更改的

    public static final int COUNT = 99; // 静态常量，属于类本身，只有一份，被final 修饰，后续不可更改

//    实例成员方法
    public void eat() {
        int a = 10; // 局部变量
        System.out.println("eat()!");
    }

//    实例成员方法
    public void sleep() {
        System.out.println("sleep()!");
    }
//    静态成员方法
    public static void staticTest() {
/*静态成员不能访问非静态成员
        sex = "mua"; error
*/
        System.out.println("staticTest()!");
    }
}

class BeginNum {
    char cNum;
    int iNum;
    float fNum;
    boolean bNum;
    String str;
}


class Person1 {
    String name;
    int age;

    public void show() {
        System.out.println("我叫"+name+age+"岁");
    }
}


class Test {
    int num;         // 非静态字段
   static int count; // 静态的字段
}


class Demo {
    int num1 = 10;
    static int num2 = 100;

    public void test1() {
        System.out.println("num1:"+num1); // 非静态之间可以互相访问
        System.out.println("num2:"+num2); // 非静态的可以访问静态的属性
        System.out.println("非静态方法");
        test2();     // 非静态可以直接访问静态的方法
    }

    public static void test2() {
     /*   System.out.println("num1:"+num1); // 静态的访问非静态的属性：报错
        test1();   */                       // 静态的访问非静态的方法：报错
        System.out.println("静态方法");

    }
}

class Person3 {
    public String name = "小华";
    public int age = 18;
}

class Person2 {
    private String name = "小华";  // private 只能再本类中可以被访问到
    private int age = 18;   // private 只能再本类中可以被访问

    public void show() { // public 公有的一个接口,通过该接口，访问被 private私有化的属性
        System.out.println("name:"+name);
        System.out.println("age:"+age);
    }
}

class Person6 {
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    private String name;
    private int age;

}


class Person10 {
    private String name;
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }
}
public class Main {
    public static void main(String[] args) {
        Person10 person10 = new Person10();
        person10.setName("你好世界");
        System.out.println(person10.getName());
    }



    public static void main9(String[] args) {
        Person6 person6 = new Person6();
        person6.setName("你好世界");
        person6.setAge(18); // 设置
        String name = person6.getName();
        int age = person6.getAge(); // 获取
        System.out.println(name);
        System.out.println(age);
    }



    public static void main8(String[] args) {
        Person2 person2 = new Person2();
/*        System.out.println(person2.name); // 报错无法访问，private的属性
        System.out.println(person2.age);  // private 修饰的属性，只能在对应的类中访问*/
        person2.show();
    }


    public static void main7(String[] args) {
        Person3 person3 = new Person3(); // 产生对象，实例化对象
        System.out.println("我叫"+person3.name+"今年"+person3.age+"岁");
    }



    public static void main6(String[] args) {
        Person person = new Person(); // 产生对象，实例化对象
        System.out.println(person.age);
        System.out.println(person.name);
        System.out.println(Person.COUNT); // 类变量的访问：类名+属性名(方法名)
        System.out.println(Person.count);
        person.eat();
        person.sleep();
    }


    public static void main5(String[] args) {
        Demo demo = new Demo(); // new 实例化对象
        demo.test1();
//        调用静态方法 类名+静态方法名
        Demo.test2();
    }



    public static void main4(String[] args) {
        Test test1 = new Test();
        test1.num++;
        Test.count++;
        System.out.println("test1:"+test1.num);  // 1
        System.out.println("count:"+Test.count); // 1

        Test test2 = new Test();  // 实例化两个对象
        test2.num++;
        Test.count++;
        System.out.println("test2:"+test2.num);  // 1
        System.out.println("count"+Test.count);  // 2
    }


    public static void main3(String[] args) {
        Person1 person1 = new Person1();
        person1.age = 18;
        person1.name = "小华";
        person1.show();
    }



    public static void main2(String[] args) {
        BeginNum  beginNum = new BeginNum(); // 实例化，new创建一个对象
        System.out.println("cNum:"+beginNum.cNum);
        System.out.println("iNum:"+beginNum.iNum); // 0
        System.out.println("fNum:"+beginNum.fNum); // 0.0
        System.out.println("bNum:"+beginNum.bNum); // false
        System.out.println("sNum:"+beginNum.str);   // null
    }


    public static void main1(String[] args) {
        Person person = new Person(); // 创建对象，实例化，new 一个对象
        person.name = "你好世界";
        person.age = 18;
        System.out.println("name:"+person.name);
        System.out.println("age:"+person.age);
//        person.study();
    }
}
